/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Resource-Tag API
资源标签相关接口

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef ResourcetagClient_h
#define ResourcetagClient_h


#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKResourcetag/ResourcetagApiModel.h>

@interface ResourcetagClient : NSObject<JDCloudClient>{
    @private
    NSString* _userAgent;
    NSString* _serviceName;
    NSString* _version;
    }

    @property (strong,readonly,nonatomic) NSString* userAgent;

    @property (strong,readonly,nonatomic) NSString* serviceName;

    @property (strong,readonly,nonatomic) NSString* version;

    @property (strong,nonatomic) NSString* contentType;

    @property (strong,nonatomic) Credential* credential;

    @property (strong,nonatomic) SDKEnvironment* sdkEnvironment;

    @property (strong,nonatomic) NSMutableDictionary* customHeader;

    @property  (strong,nonatomic) NSString* httpRequestProtocol;

    -(void) addCustomerHeaderWithKey:(NSString*) key
    value:(NSString*) value;

    -(id)initWithGlobalConfig;

    -(id)initWithCredential:(Credential*)credential
    sdkEnvironment:(SDKEnvironment*)sdkEnvironment;
    -(id)initWithCredential:(Credential*)credential;
    /**
    describeResources sync request
    @param describeResourcesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeResourcesResponse` the request response data model
    */
    -(NSDictionary*) describeResourcesSyncWithRequest:(ResourcetagDescribeResourcesRequest*) describeResourcesRequest;

    -(void)describeResourcesAsyncWithRequest:(ResourcetagDescribeResourcesRequest*) describeResourcesRequest
    completionHandler:(void(^)(int statusCode,ResourcetagDescribeResourcesResponse* _Nullable describeResourcesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeTags sync request
    @param describeTagsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeTagsResponse` the request response data model
    */
    -(NSDictionary*) describeTagsSyncWithRequest:(ResourcetagDescribeTagsRequest*) describeTagsRequest;

    -(void)describeTagsAsyncWithRequest:(ResourcetagDescribeTagsRequest*) describeTagsRequest
    completionHandler:(void(^)(int statusCode,ResourcetagDescribeTagsResponse* _Nullable describeTagsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    tagResources sync request
    @param tagResourcesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `tagResourcesResponse` the request response data model
    */
    -(NSDictionary*) tagResourcesSyncWithRequest:(ResourcetagTagResourcesRequest*) tagResourcesRequest;

    -(void)tagResourcesAsyncWithRequest:(ResourcetagTagResourcesRequest*) tagResourcesRequest
    completionHandler:(void(^)(int statusCode,ResourcetagTagResourcesResponse* _Nullable tagResourcesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    unTagResources sync request
    @param unTagResourcesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `unTagResourcesResponse` the request response data model
    */
    -(NSDictionary*) unTagResourcesSyncWithRequest:(ResourcetagUnTagResourcesRequest*) unTagResourcesRequest;

    -(void)unTagResourcesAsyncWithRequest:(ResourcetagUnTagResourcesRequest*) unTagResourcesRequest
    completionHandler:(void(^)(int statusCode,ResourcetagUnTagResourcesResponse* _Nullable unTagResourcesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    queryResource sync request
    @param queryResourceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `queryResourceResponse` the request response data model
    */
    -(NSDictionary*) queryResourceSyncWithRequest:(ResourcetagQueryResourceRequest*) queryResourceRequest;

    -(void)queryResourceAsyncWithRequest:(ResourcetagQueryResourceRequest*) queryResourceRequest
    completionHandler:(void(^)(int statusCode,ResourcetagQueryResourceResponse* _Nullable queryResourceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    /**
    resourcetag common sync request
    @param  jdcloudDataRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
    */
    -(NSDictionary*) resourcetagCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                           url:(NSString*) url
                                        method:(NSString*) method;

    -(void)resourcetagCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                  url:(NSString*) url
                               method:(NSString*) method
                    completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    @end


    #endif /* ResourcetagClient_h */
